﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.ComponentModel;

using Package_Civilisation;
using Package_Jeu;

using Wrapper;

namespace CivilisationIHM
{
    /// <summary>
    /// Logique d'interaction pour Window1.xaml
    /// </summary>
    /// 
    [Serializable()]
    public partial class Menu : Window
    {
        
        public Menu()
        {
            InitializeComponent();
            String chemin = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"..\..\..\Images\";
            Uri iconUri = new Uri(chemin + "king.ico");
            this.Icon = BitmapFrame.Create(iconUri);
        }

        public void defaultTailleCarte(object sender, DependencyPropertyChangedEventArgs e)
        {
            TailleCarte.SelectedIndex = 1; 
        }


        private void Retour(object sender, RoutedEventArgs e)
        {
            MainWindow menu = new MainWindow();
            App.Current.MainWindow = menu;
            this.Close();
            menu.Show();
        }

        unsafe private void CreerPartie(object sender, RoutedEventArgs e)
        {   //Tester que les champs sont remplis
            Erreur.Visibility = Visibility.Collapsed;

            Boolean correcte = true;
            int nbJoueur = 2;
            int tailleCarte = 25;
            nbJoueur = int.Parse((string)NbJoueur.SelectionBoxItem);
            tailleCarte = int.Parse((string)TailleCarte.SelectionBoxItem);
            Partie partieCourante = new Partie(tailleCarte);
            List<string> listPseudo = new List<string>();
            List<string> listCivilisation = new List<string>();

            //On récupère les pseudonymes
            listPseudo.Add(Joueur1.Text);
            listPseudo.Add(Joueur2.Text);
            listPseudo.Add(Joueur3.Text);
            listPseudo.Add(Joueur4.Text);

            //On récupère les choix de civilisation
            listCivilisation.Add((string)Choix1.SelectionBoxItem);
            listCivilisation.Add((string)Choix2.SelectionBoxItem);
            listCivilisation.Add((string)Choix3.SelectionBoxItem);
            listCivilisation.Add((string)Choix4.SelectionBoxItem);

            //On crée les joueurs 

            /*******/

            WrapperAlgo w = new WrapperAlgo();
           
            int** positions = w.placeJoueurs(nbJoueur,tailleCarte);
            for (int i = 0; i < nbJoueur; i++)
            {
                string pseudo = listPseudo.ElementAt(i);
                string choix = listCivilisation.ElementAt(i);

                if (pseudo != "" & choix != "")
                {
                    Joueur j = new Joueur(pseudo, choix, partieCourante, positions[i][0], positions[i][1]);
                    Console.WriteLine(positions[i][0]);
                    partieCourante.addJoueur(j);
                    
                }
                else
                {
                    Erreur.Visibility = Visibility.Visible;
                    partieCourante.resetJoueur();
                    correcte = false;
                    break;


                }
            }
            if (correcte)
            
            {
                Random rnd = new Random((int)DateTime.Now.Ticks & 0x0000FFFF);
                partieCourante.listJoueur.OrderBy((item) => rnd.Next());
                CarteIHM carte = new CarteIHM(partieCourante);
                App.Current.MainWindow = carte;
                this.Close();
                carte.Show();
                carte.centerScrollViewer();
            }
            
        }
        //On affiche la nouvelle fenêtre

    }
}
